package ee;

import org.junit.Test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

/**
 * 流--传输数据--传输数据过程绝不能出错【处理手段】
 * 标准流结合异常--标准I0
 *
 * 异常
 * Java面向对象语言，程序中所出现的所有错误，定义为对象【处理对应错误】
 *
 * Throwable顶级异常超类
 *
 * Exception异常：描述程序级别的错误--有解决方案
 *               编译期：RonTimeExcept异常表示类
 *               FileOutputStream创建对象--波浪线---抛出方法之外
 *               检查异常：通常都是编译器检查处理，程序直接报错，抛出
 *               解决方案：1.捕获异常（*）
 *                       2.抛出异常--抛出方法之外--打印控制台
 *
 *                运行期：控制台直接显示异常对象【异常对象名字，产生原因】
 *                非检查异常：控制台输出异常对象名称，RunTimeException异常类表示
 *
 *                最后了解【throw与throws---RunTimeException】
 *  Error错误：描述程序级别的错误--出现--程序宕机
 *         非常低-->递归自己调自己【方法】-->
 *
 */
public class EE {
    /**
     * Error 错误--程序严重错误
     * 模拟：方法调方法--找出溢出错误
     * StackOverflowError栈溢出错误
     * ---
     * while(true){
     * 拼接字符串对象
     * }
     *
     */
    public static void method(){method();}
    @Test
    public void testError(){
        EE.method();}
/**
 * Exception异常：检查异常【出现编译期】--代码报波浪线
 * 两种处理手段：1.捕获异常
 *             2抛出异常
 * 非检查异常【出现运行期】---代码无错误--控制台
 * ------ ---------------- -------------
 * 异常：FileNotFoundException 文件不存在异常
 * 产生原因：路径写错，文件名写错
 * 异常：NullPointerException 空指针异常
 * 产生原因：获取字符串为空，数组：值为空，集合：元素为空【存在null值】
 * 异常：StringIndexOutOfBoundsException 字符串下标越界异常
 * 产生原因：字符串不是正确类型
 * 异常：NumberFormException 数字转换异常
 * 产生原因：字符串不是正确类型
 *
 */
@Test
public void testException() throws FileNotFoundException {
    //检查异常【出现编译期】---代码报波浪线
     //       FileOutputStream fis=new FileOutputStream("");

}
/**
 * 作业1：写出5个【非检查】异常的代码示例
 * 提示：查API---java.lang.异常
 * 字符串，包装类，集合，I0流
 */
@Test
    public void testHomeWork1(){

}
}
